﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Foundation {

    /// <summary>
    /// Kategorie, mit welcher man die Tracks einer Stimmung oder so zuordnen kann
    /// </summary>
    public class Category  {
        public Category(Guid id, string name): this() {
            this.Id = id;
            this.Name = name; 
        }

        public Category(string name): this() {
            this.Id = Guid.NewGuid();
            this.Name = name; 
        }

        public Category() {
            this.Tracklist = new List<Track>(); 
        }

        /// <summary>
        /// ID
        /// </summary>
        public Guid Id { get; set; }
        /// <summary>
        /// Name
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// Liste mit allen Tracke, welche zu dieser Kategorie gehören
        /// </summary>
        public List<Track> Tracklist { get; set; }

        /// <summary>
        /// Gibt die String Representation des Objektes zurück
        /// </summary>
        /// <returns></returns>
        public override string ToString() {
            return this.Name; 
        }

        /// <summary>
        /// Überprüft, ob die mitgegebene Category den gleichen Namen hat, 
        /// wie das Objekt, auf welchem die Equals Methode aufgerufen wird
        /// </summary>
        /// <param name="obj">Die zu vergleichende Category</param>
        /// <returns>Das Resultat des Vergleichs</returns>
        public override bool Equals(object obj) {
            if (!obj.GetType().Equals(typeof(Category))) {
                return false;
            }            
            return this.Name.ToLower().Equals(((Category)obj).Name.ToLower());
        }

        /// <summary>
        /// Gibt den Hashcode des Objektes zurück
        /// </summary>
        /// <returns></returns>
        public override int GetHashCode() {
            return base.GetHashCode();
        }
    }
}
